iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
佛心分享-IT 人自學之術

區塊鏈技術應用系列 第 29

常見的智能合約安全漏洞

  • 分享至 

  • xImage
  •  

最後學習常見的智能合約安全漏洞,不論是合約或軟體安全性都是非常重要的一環,了解攻擊方法才能有助於提高合約的安全性,防止潛在的攻擊。知己知彼,百戰百勝。

1. 重入攻擊(Reentrancy Attack)
* 合約在外部調用另一個合約時,沒有妥善防範重入的情況,攻擊者可以在第一次轉移資金後再次進入合約執行,從而重複執行提取操作。
* 典型案例:DAO 攻擊事件。
示例:
https://ithelp.ithome.com.tw/upload/images/20241013/20169238bj79GhKV1H.png
* 攻擊風險:攻擊者可以在 call 函數執行後但在 balances[msg.sender] -= amount; 更新前再進行一次withdraw,從而提取多次資金。
* 解決方案:採用「先更新狀態,再進行外部調用」的方式,或使用 ReentrancyGuard 來防範重入攻擊。
https://ithelp.ithome.com.tw/upload/images/20241013/20169238oDC0IQneFT.png

2.區塊時間依賴性
* 問題:某些合約依賴 block.timestamp 或 block.number 來確定特定操作的執行時間,但這些值可能會被礦工操縱,從而對結果產生不利影響。
* 解決方案:使用較寬鬆的時間窗口來避免礦工操縱,並限制時間依賴的敏感性。
https://ithelp.ithome.com.tw/upload/images/20241013/20169238URgn2qDxPh.png
3.隨機數生成漏洞
* 問題:區塊鏈上的隨機數不是真正隨機的,依賴 blockhash、block.timestamp 等值來生成隨機數的合約可能被攻擊者預測和操縱。
* 解決方案:使用鏈下隨機數生成器(如 Chainlink VRF)來生成真正的隨機數。
https://ithelp.ithome.com.tw/upload/images/20241013/2016923869OtxItafy.png


上一篇
Crowdfunding
下一篇
常見的智能合約安全漏洞2
系列文
區塊鏈技術應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言